#ifndef MUSIC_H
#define MUSIC_H

#include <QString>
#include <QUrl>
#include <QImage>
#include <QPixmap>

class Music
{
public:
    Music();
    Music(const QUrl& url);

    void setMusicName(const QString& musicName);
    void setMusicSinger(const QString& musicSinger);
    void setMusicAlbum(const QString& musicAlbum);
    void setDuration(qint64 duration);
    void setCoverImage(const QByteArray& imageData);
    void setIsLike(bool isLike);
    void setIsHistory(bool isHistory);
    void setMusicUrl(const QUrl& musicUrl);
    void setMusicId(const QString& musicId);

    QString getMusicName() const;
    QString getMusicSinger() const;
    QString getMusicAlbum() const;
    qint64 getDuration() const;
    QPixmap getCoverImage() const;
    bool getIsLike() const;
    bool getIsHistory() const;
    QUrl getMusicUrl() const;
    QString getMusicId() const;
    QString getLrcFilePath() const;

    // 将歌曲属性写入到数据库
    void insertMusicToDB();

private:
    void parseMediaMetaMusic();

private:
    QString musicName;  // 音乐名称
    QString musicSinger;  // 歌手
    QString musicAlbum;  // 专辑
    qint64 duration;  // 音乐持续时长，单位为毫秒，04:30.56 --> (4*60+30)*1000+56 = 270056毫秒
    QPixmap coverImage;  // 封面图
    bool isLike;  // 是否喜欢
    bool isHistory;  // 是否为历史播放
    QUrl musicUrl;  // 音乐路径
    QString musicId;  // 为了保证歌曲的唯一性，需要给音乐添加id
};

#endif // MUSIC_H
